package com.meituan.sdk.model.ddzh.yuding.updatebookrule;

import com.meituan.sdk.annotations.ApiMeta;
import java.util.List;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import com.meituan.sdk.internal.utils.JsonUtil;
import com.google.gson.annotations.SerializedName;
import javax.validation.constraints.NotNull;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.MeituanRequest;

/**
* 三方门店推送预订规则至平台
* This file was automatically generated.
*/
@ApiMeta(
    path = "/ddzh/yuding/updatebookrule",
    businessId = 58,
    apiVersion = "10023",
    apiName = "updatebookrule",
    needAuth = true
)
public class UpdatebookruleRequest implements MeituanRequest<Boolean> {
    /**
    * <p data-diff-id="ct-diff-id-065b6098-ce0b-4cc9-bda6-bc7efb209e60">是否可退，0-可退，1-不可退</p>
    */
    @NotNull(message = "refundable不能为空")
    @SerializedName("refundable")
    private Integer refundable;
    /**
    * <p data-diff-id="ct-diff-id-21fd680d-a37f-4ab1-9a31-f6317e3a0c75">提前可订时间，分钟数，如：90，表示90分钟</p>
    */
    @SerializedName("addOrderBefore")
    private Integer addOrderBefore;
    /**
    * <p data-diff-id="ct-diff-id-e35a40cb-af3e-4845-aabc-0ec4778e8e53">提前可退时间，在refundable为不可退时，该字段可以不传，传了也是无效的 分钟数，如：90，表示90分钟</p>
    */
    @SerializedName("refundBefore")
    private Integer refundBefore;
    /**
    * <p data-diff-id="ct-diff-id-b8cba817-6642-4b98-9960-a4c7c2834efb">通知方式，2-IVR，8-PC弹窗，16-APP通知。例如 [2,8] 一般三方仅需要传入2就可以了，或者不传</p>
    */
    @SerializedName("notifyTypeList")
    private List<Integer> notifyTypeList;
    /**
    * <p data-diff-id="ct-diff-id-12378019-30da-4efd-95d7-2625e9c4f87c">通知电话，必须是手机号码，座机不行</p>
    */
    @SerializedName("notifyPhone")
    private String notifyPhone;
    /**
    * <p data-diff-id="ct-diff-id-6e87a3db-68a7-4a13-91a5-d3465d092fea">不可预订日期, 如[1565766000000,1565767000000]</p>
    */
    @SerializedName("disableDateList")
    private List<Long> disableDateList;
    /**
    * <p data-diff-id="ct-diff-id-51fe04ce-2c4a-4bd6-9260-ded29c8a3301">可预订开始时段，如：“01:00”</p>
    */
    @SerializedName("reservePeriodBegin")
    private String reservePeriodBegin;
    /**
    * <p data-diff-id="ct-diff-id-4ba55647-a466-43d6-8629-7f3af8c27429">可预订结束时段，如：“23:00”</p>
    */
    @SerializedName("reservePeriodEnd")
    private String reservePeriodEnd;
    /**
    * <p data-diff-id="ct-diff-id-3cbb55a1-b584-4cac-bb53-a9e73353b3e9">手动接单开始时段，如：“01:00”</p>
    */
    @SerializedName("acceptPeriodBegin")
    private String acceptPeriodBegin;
    /**
    * <p data-diff-id="ct-diff-id-b8b76e60-fdaf-4559-b8cd-dea4ff5214aa">手动接单结束时段，如：“23:00”</p>
    */
    @SerializedName("acceptPeriodEnd")
    private String acceptPeriodEnd;
    /**
    * <p data-diff-id="ct-diff-id-f6cb35ef-8172-41f2-9d87-b2900547347a">特殊价格日期</p>
    */
    @SerializedName("specialPriceDateList")
    private List<Long> specialPriceDateList;
    /**
    * <p data-diff-id="ct-diff-id-3ffebce1-168a-4001-a1ec-e40959c0579a">三方扩展字段json串，如需要开票信息，则直接传{"needBill":1}</p>
    */
    @SerializedName("thirdExtraInfo")
    private String thirdExtraInfo;
    /**
    * <p data-diff-id="ct-diff-id-8a1d2bea-37e4-4644-82e0-256db0645045">是否支持非规则退款</p>
    */
    @SerializedName("irregularRefund")
    private Boolean irregularRefund;
    /**
    * <p data-diff-id="ct-diff-id-7d759135-7f81-4d1f-b0f1-91509dfc77cf">最晚到店时间</p>
    */
    @SerializedName("latestArrivalTime")
    private String latestArrivalTime;
    /**
    * <p data-diff-id="ct-diff-id-aeb1536b-e8c4-4641-944a-0f0418894c45">展示天数</p>
    */
    @SerializedName("bookingDayNumber")
    private String bookingDayNumber;
    /**
    * <p data-diff-id="ct-diff-id-6d9de222-0ba6-427b-a99a-d98c6933de52">可预订楼层</p>
    */
    @SerializedName("bookableLayer")
    private String bookableLayer;
    /**
    * <p data-diff-id="ct-diff-id-0c757481-5b36-4ac0-82a6-4304161f1cc0">舞台以及区域底图</p>
    */
    @SerializedName("stageAreaPictures")
    private String stageAreaPictures;
    /**
    * <p data-diff-id="ct-diff-id-a3f3367e-3169-495a-a726-fb291c520be2">画布信息</p>
    */
    @SerializedName("canvasSize")
    private String canvasSize;
    /**
    * <p data-diff-id="ct-diff-id-660aaa53-dd63-4517-aba1-75ae07096f8b">是否有座位图，是否开通预定小程序，0-否，1-是</p>
    */
    @SerializedName("hasSeatPicture")
    private Integer hasSeatPicture;
    /**
    * <p data-diff-id="ct-diff-id-d2643aa7-42b3-4e55-bc1c-99ee88cb5cc8">最晚可退时间</p>
    */
    @SerializedName("latestRefundTime")
    private String latestRefundTime;
    /**
    * <p data-diff-id="ct-diff-id-935274a0-feca-4b95-a1a3-2bf53922fc3d">最晚延迟时间点，2023-09-08 20:00:00</p>
    */
    @SerializedName("latestPeriodRulePoint")
    private String latestPeriodRulePoint;
    /**
    * <p data-diff-id="ct-diff-id-d212c881-5c58-41c8-b999-78e289d83ac0">延迟分钟数</p>
    */
    @SerializedName("delayRuleMinute")
    private String delayRuleMinute;

    public Integer getRefundable() {
        return refundable;
    }
    public void setRefundable(Integer refundable) {
        this.refundable = refundable;
    }
    public Integer getAddOrderBefore() {
        return addOrderBefore;
    }
    public void setAddOrderBefore(Integer addOrderBefore) {
        this.addOrderBefore = addOrderBefore;
    }
    public Integer getRefundBefore() {
        return refundBefore;
    }
    public void setRefundBefore(Integer refundBefore) {
        this.refundBefore = refundBefore;
    }
    public List<Integer> getNotifyTypeList() {
        return notifyTypeList;
    }
    public void setNotifyTypeList(List<Integer> notifyTypeList) {
        this.notifyTypeList = notifyTypeList;
    }
    public String getNotifyPhone() {
        return notifyPhone;
    }
    public void setNotifyPhone(String notifyPhone) {
        this.notifyPhone = notifyPhone;
    }
    public List<Long> getDisableDateList() {
        return disableDateList;
    }
    public void setDisableDateList(List<Long> disableDateList) {
        this.disableDateList = disableDateList;
    }
    public String getReservePeriodBegin() {
        return reservePeriodBegin;
    }
    public void setReservePeriodBegin(String reservePeriodBegin) {
        this.reservePeriodBegin = reservePeriodBegin;
    }
    public String getReservePeriodEnd() {
        return reservePeriodEnd;
    }
    public void setReservePeriodEnd(String reservePeriodEnd) {
        this.reservePeriodEnd = reservePeriodEnd;
    }
    public String getAcceptPeriodBegin() {
        return acceptPeriodBegin;
    }
    public void setAcceptPeriodBegin(String acceptPeriodBegin) {
        this.acceptPeriodBegin = acceptPeriodBegin;
    }
    public String getAcceptPeriodEnd() {
        return acceptPeriodEnd;
    }
    public void setAcceptPeriodEnd(String acceptPeriodEnd) {
        this.acceptPeriodEnd = acceptPeriodEnd;
    }
    public List<Long> getSpecialPriceDateList() {
        return specialPriceDateList;
    }
    public void setSpecialPriceDateList(List<Long> specialPriceDateList) {
        this.specialPriceDateList = specialPriceDateList;
    }
    public String getThirdExtraInfo() {
        return thirdExtraInfo;
    }
    public void setThirdExtraInfo(String thirdExtraInfo) {
        this.thirdExtraInfo = thirdExtraInfo;
    }
    public Boolean getIrregularRefund() {
        return irregularRefund;
    }
    public void setIrregularRefund(Boolean irregularRefund) {
        this.irregularRefund = irregularRefund;
    }
    public String getLatestArrivalTime() {
        return latestArrivalTime;
    }
    public void setLatestArrivalTime(String latestArrivalTime) {
        this.latestArrivalTime = latestArrivalTime;
    }
    public String getBookingDayNumber() {
        return bookingDayNumber;
    }
    public void setBookingDayNumber(String bookingDayNumber) {
        this.bookingDayNumber = bookingDayNumber;
    }
    public String getBookableLayer() {
        return bookableLayer;
    }
    public void setBookableLayer(String bookableLayer) {
        this.bookableLayer = bookableLayer;
    }
    public String getStageAreaPictures() {
        return stageAreaPictures;
    }
    public void setStageAreaPictures(String stageAreaPictures) {
        this.stageAreaPictures = stageAreaPictures;
    }
    public String getCanvasSize() {
        return canvasSize;
    }
    public void setCanvasSize(String canvasSize) {
        this.canvasSize = canvasSize;
    }
    public Integer getHasSeatPicture() {
        return hasSeatPicture;
    }
    public void setHasSeatPicture(Integer hasSeatPicture) {
        this.hasSeatPicture = hasSeatPicture;
    }
    public String getLatestRefundTime() {
        return latestRefundTime;
    }
    public void setLatestRefundTime(String latestRefundTime) {
        this.latestRefundTime = latestRefundTime;
    }
    public String getLatestPeriodRulePoint() {
        return latestPeriodRulePoint;
    }
    public void setLatestPeriodRulePoint(String latestPeriodRulePoint) {
        this.latestPeriodRulePoint = latestPeriodRulePoint;
    }
    public String getDelayRuleMinute() {
        return delayRuleMinute;
    }
    public void setDelayRuleMinute(String delayRuleMinute) {
        this.delayRuleMinute = delayRuleMinute;
    }


    @Override
    public MeituanResponse<Boolean> deserializeResponse(String response) {
        Type type = new TypeToken<MeituanResponse<Boolean>>(){}.getType();
        return JsonUtil.fromJson(response, type);
    }
    @Override
    public String serializeToJson() {
        return JsonUtil.toJson(this);
    }


    @Override
    public String toString() {
        return "UpdatebookruleRequest{" + "refundable=" + refundable + "," + "addOrderBefore=" + addOrderBefore + "," + "refundBefore=" + refundBefore + "," + "notifyTypeList=" + notifyTypeList + "," + "notifyPhone=" + notifyPhone + "," + "disableDateList=" + disableDateList + "," + "reservePeriodBegin=" + reservePeriodBegin + "," + "reservePeriodEnd=" + reservePeriodEnd + "," + "acceptPeriodBegin=" + acceptPeriodBegin + "," + "acceptPeriodEnd=" + acceptPeriodEnd + "," + "specialPriceDateList=" + specialPriceDateList + "," + "thirdExtraInfo=" + thirdExtraInfo + "," + "irregularRefund=" + irregularRefund + "," + "latestArrivalTime=" + latestArrivalTime + "," + "bookingDayNumber=" + bookingDayNumber + "," + "bookableLayer=" + bookableLayer + "," + "stageAreaPictures=" + stageAreaPictures + "," + "canvasSize=" + canvasSize + "," + "hasSeatPicture=" + hasSeatPicture + "," + "latestRefundTime=" + latestRefundTime + "," + "latestPeriodRulePoint=" + latestPeriodRulePoint + "," + "delayRuleMinute=" + delayRuleMinute + "}";
    }
}
